package com.ai.databao.common.util;

import java.text.DecimalFormat;
import java.util.Map;

public class CommonUtils {

	/**
	 * 判断字符串是否为数字
	 * 
	 * @param str
	 * @return
	 * @author liangyi
	 */
	public static boolean isNumeric(String str) {

		if (str == null) {
			return false;
		}

		for (int i = str.length(); --i >= 0;) {
			int chr = str.charAt(i);
			if (chr < 48 || chr > 57)
				return false;
		}
		return true;
	}


	
	/**
	 * 从map中获取int。若value为空或不是数字，返回0
	 * @param map
	 * @param key
	 * @return
	 * @author liangyi
	 */
	public static int getIntValueFromMap(Map<String,Object> map,String key){
		
		if (map==null) {
			return 0;
		}
		
		Object valueObj=map.get(key);
		if (valueObj==null) {
			return 0;
		}
		
		int result=0;
		try {
			result=Integer.valueOf(valueObj.toString());
		} catch (Exception e) {
			result=0;
		}
		
		return result;
	}
	
	/**
	 * 从map中获取int。若value为空或不是数字，返回0
	 * @param map
	 * @param key
	 * @return
	 * @author liangyi
	 */
	public static int getIntValueFromIntMap(Map<String,Integer> map,String key){
		
		if (map==null) {
			return 0;
		}
		
		Integer valueObj=map.get(key);
		int result=valueObj==null?0:valueObj.intValue();
		
		return result;
	}
	
	/**
	 * 从map中获取int。若value为空或不是数字，返回0
	 * @param map
	 * @param key
	 * @return
	 * @author liangyi
	 */
	public static double getDoubleValueFromMap(Map<String,Object> map,String key){
		
		if (map==null) {
			return 0;
		}
		
		Object valueObj=map.get(key);
		if (valueObj==null) {
			return 0;
		}
		
		double result=0;
		try {
			result=Double.valueOf(valueObj.toString());
		} catch (Exception e) {
			result=0;
		}
		
		return result;
	}
	
	/**
	 * 从map中获取String。若value为空，返回nullValue的值
	 * @param map
	 * @param key
	 * @param nullValue 当map中value为null时，返回的默认值
	 * @return
	 * @author liangyi
	 */
	public static String getStringValueFromMap(Map<String,Object> map,String key,String nullValue){
		if (map==null) {
			return nullValue;
		}
		Object valueObj=map.get(key);
		if (valueObj==null) {
			return nullValue;
		}
		return valueObj.toString();
	}
	
	
	/**
	 * 统计增长率
	 * @param oldValue
	 * @param newValue
	 * @return
	 * @author liangyi
	 */
	public static double calGrowthRate(int oldValue,int newValue){
		if (oldValue<=0) {
			return 1;
		}
		return (double)(newValue-oldValue)/oldValue;
	}
	
	/**
	 * 保留1位小数点
	 * @param num
	 * @return
	 */
	public static String getDoubleFormat(Number num){
		DecimalFormat doubleFormat = new DecimalFormat("0.0");
		return doubleFormat.format(num);
	}
	
	/**
	 * 保留1位小数点
	 * @param num
	 * @param format 格式，如0.0
	 * @return
	 */
	public static String getDoubleFormat(Number num,String format){
		DecimalFormat doubleFormat = new DecimalFormat(format);
		return doubleFormat.format(num);
	}
	
}
